import React,{Component} from 'react'
import {increment,decrement, incrementAsync} from '../../redux/actions/count'

//引入connect用于连接UI组件与redux
import {connect} from 'react-redux'

class Count extends Component{

  //加
  increment = ()=>{
    const {value} = this.selectNumber
    this.props.increment(value*1)
  }
  //减
  decrement = ()=>{
    const {value} = this.selectNumber
    this.props.decrement(value*1)
  }
  //奇数再加
  incrementIfOdd = ()=>{
    const {value} = this.selectNumber
    if(this.props.count%2 !== 0) this.props.increment(value*1)
  }
  //异步加
  incrementAsync = ()=>{
    const {value} = this.selectNumber
    this.props.incrementAsync(value*1,500)
  }

  render(){
    return (
      <div>
        <h2>我是Count组件，下方总人数为：{this.props.personSum}</h2>
        <h3>当前求和为：{this.props.count}</h3>
        <select ref={c => this.selectNumber = c}>
          <option value="1">1</option>
          <option value="2">2</option>
          <option value="3">3</option>
        </select><br />
        <button onClick={this.increment}>+</button>&nbsp;
        <button onClick={this.decrement}>-</button>&nbsp;
        <button onClick={this.incrementIfOdd}>当前求和为奇数再加</button>&nbsp;
        <button onClick={this.incrementAsync}>异步加</button>
      </div>
    )
  }
}

export default connect(
  state => ({
    count:state.count,
    personSum:state.persons.length
  }),
  {
    increment,    //当UI组件调用该方法，react-redux会在内部调用dispatch方法，直接在action里分发给store
    decrement,
    incrementAsync
  }
)(Count)


